package test.msm;

import hyl.base.cache2.ExToken;
import hyl.core.MyFun;
import hyl.core.db.MyDB;
import hyl.ext.base.MySession;
import hyl.ext.base.SessionFactory;
import hyl.ext.web.ms.BInfo;
import hyl.ext.web.ms.TMsA;
import hyl.ext.web.ms.TMsB;

/**
 * 
 * @author 37798955@qq.com
 *
 */
public class testsso2_2 {
	public static void main(String[] args) {
		testsso2_2 tt2 = new testsso2_2();
		tt2.f1_1_b();
	}

	TMsA _ma = new TMsA();
	TMsB _mb = new TMsB();

	public testsso2_2() {

		_ma.init();
	
	}

	/*
	 * 提取 b本地tokena 创建一个tokenb 发送给a a 接收tokenb ,appidb, tokena
	 * 
	 */
	public void f1_1_b() {

		String appidb = null;
		String 重定向到 = "http://www.163.com";
		BInfo mi = _mb._binfo;
		ExToken tokenB = _mb.createExToken();
		String stamp = tokenB.getStampstr();
		String 明文 = MyFun.join2(",", appidb, tokenB.getId(), 重定向到, stamp);
		String mm = mi.aes加密64(明文);
		MyFun.print("f1_1_b()", "\r\n", 明文, "\r\n", mm, "\r\n", stamp);
		f1_2_a(mm, stamp);

	}

	/*
	 * a: 查询 tokena 是否存在,
	 * 
	 * 如果 验证签名 () 正确
	 * 
	 * 签名无法解决tokenb 加密的问题 对方如果模拟a网站 获取 tokenb 就可以直接登录b
	 * 
	 */
	public void f1_2_a(String 密文, String stamp) {

		String mm = _mb._binfo.aes解密64(密文);
		MyFun.print("mm", mm);
		String[] mms = mm.split(",");
		String appid_b = mms[0];
		String tokenB = mms[1];
		String urlb = mms[2];
		String stampb = mms[3];
		// 如果令牌不对,说明密文不对 ,说明来自的b系统 不正确 阻止登录
		if (MyFun.isBlank(stamp) || MyFun.isBlank(stampb) || !stampb.equals(stamp))
			return;

		// 如果 appid 为空或者未在中心注册 ,阻止登录,必须先注册
		if (MyFun.isBlank(appid_b) || !_mb._binfo.eqAppid(appid_b))
			return;

	

		SessionFactory.getInstance();
		MySession ms = SessionFactory.getSession(null, null);
		if ( ms.getUserId() == null) {
			// 跳转到登录页面

		} else {
			// 重定向到urlb
		}

	}

	public void f1_2_a_login(String tokenb) {
		//如果60s 未登录 token自动过期
		// 登录成功后
		// 重定向到某页面
	}
	
	public void f1_3_b(String tokenb) {
		// 如果 令牌过期 ,阻止登录
		if (MyFun.isBlank(tokenb) || !_mb.containExToken(tokenb))
			return;
	}

}
